【Informatica CDGC】Redshiftで作成したViewはどのようにデータカタログCDGCで表示されるのか確認してみた
はじめに
こんにちは、データ事業本部の渡部です。
今回はInformaticaのデータカタログ「Cloud Data Governance and Catalog(以降、CDGC)」でRedshiftのViewがどのように表示されるのか確認してみました。
ここ数年でAWSはZero-ETLやS3 Auto Copyなど、いわゆるETLを作成する必要なくデータ連携をマネージドで行ってくれる機能を出しています。
これらの機能はデータを複製することに特徴をもったサービスであるため、分析用にデータ加工をしてデータマートを作成したい際は今までどおりETLでテーブルを作成するか、Viewを作成する必要があります。
そこで今回はInformatica LessなView作成であっても、問題なくデータカタログ上にリネージュをはじめとしたメタデータが表示されているか 確認していこうと思います。
結論!
Viewは想定どおりにリネージュをはじめメタデータが取得できていました。
マテリアライズドビューも問題なくデータカタログ化できました。
検証してみる
View作成
今回検証に使用するソーステーブルは、以下検証で使用したテーブルと同じものを複製して使用します。
Viewの参照テーブルの定義とデータは以下のとおりです。
-- ソーステーブル1: 顧客テーブル
CREATE TABLE dwh.customers_view (
customer_id INTEGER PRIMARY KEY,
customer_name VARCHAR(100),
age INTEGER,
created_at TIMESTAMP
);
-- ソーステーブル2: 購入テーブル
CREATE TABLE dwh.purchases_view (
purchase_id INTEGER PRIMARY KEY,
customer_id INTEGER,
amount DECIMAL(10,2),
created_at TIMESTAMP
);
-- ソーステーブル1のサンプルデータ
INSERT INTO dwh.customers_view (customer_id, customer_name, age, created_at) VALUES
(1, '山田太郎', 25, '2023-01-01 10:00:00'),
(2, '鈴木花子', 35, '2023-01-01 10:15:00'),
(3, '佐藤次郎', 45, '2023-01-01 10:30:00'),
(4, '田中明子', 25, '2023-01-01 10:45:00');
-- ソーステーブル2のサンプルデータ
INSERT INTO dwh.purchases_view (purchase_id, customer_id, amount, created_at) VALUES
(1, 1, 1000, '2023-01-01 11:00:00'),
(2, 2, 2000, '2023-01-01 11:15:00'),
(3, 3, 3000, '2023-01-01 11:30:00'),
(4, 1, 1500, '2023-01-01 11:45:00');
以下の定義でViewを作成しました。
create view purchase_summary_view as
SELECT
p.customer_id as customer_id
,SUM(p.amount) as total_amount
,sysdate as created_at
FROM
dwh.purchases p
LEFT OUTER JOIN dwh.customers c
ON c.customer_id = p.customer_id
GROUP BY
p.customer_id
;
CDGCでの表示確認
Viewの作成前、ソーステーブルをCDGCで確認してみました。
ソーステーブル用に用意したcustomers_view
、purchases_view
どちらも上流下流へのリネージュは表示されいない状態です。
Viewを作成、再度RedshiftをスキャンしてCDGCを確認してみました。
customers_view
、purchases_view
どちらも下流に作成したViewがリネージュで表示されています。
作成したViewpurchases_summary_view
を中心に表示してみると、2つのソーステーブルが正しくリネージュ上に表示されていることが確認できました。
カラムレベルでも使用しているカラムが表示されていますね。
InformaticaのETL(Cloud Data Integration)を使用して作成したテーブルにはなかったタブでコード
というのがありました。こちらではDDLが確認できました。
どのようにViewが作成されているのか一目でわかるのが便利ですね。
タブを一通り見てみましたが、ViewだからとかInformaticaのETLを使用していないからとかのメタデータ抽出の少なさはなさそうですね。
少し気になったので、試しにマテリアライズドビューを作成してみました。
するとこちらはソーステーブルは正しく表示されていたのですが、ストアドプロシージャまでもリネージュに表示されていました。
調べてみるとマテリアライズドビューはストアドプロシージャが裏で動いているようですね。
データリフレッシュをする必要があることを考えると納得がいくのですが、いい勉強になりました。
なおストアドプロシージャまではリネージュ表示しなくても、、という場合は、メタデータコマンドセンターで取得するメタデータをフィルタするとよいでしょう。
メタデータを除外
でストアドプロシージャ
を選択すればOKです。
マテリアライズドビューも問題なくメタデータ抽出可能ということで、最近のアップデートでZero-ETLとの機能強化もあったマテリアライズドビュー活用の追い風となりそうですね。
まとめ
以上、検証でした。
CDGCはViewであってもしっかりリネージュをはじめとしたメタデータ抽出ができていましたね。
Glueやdbtといったデータソースにも対応しているため、Informaticaを使用していない場合でも問題なくデータカタログの一選択肢とできそうです。
なおどのデータソースが対応しているか、また何のオブジェクト(テーブルとかViewとか)をメタデータとして読み取れるか、という情報はInformaticaの公式ドキュメントに記載があります。
Informaticaアカウントを登録する必要がありますが、Metadata Command Centerのドキュメントから確認可能です。
画面を触るだけでは読み取れない情報は多くあるため、ドキュメントを参照しながらInformaticaのデータカタログを触ってみるのが最善となります。
以上、どなたかのご参考になれば幸いです。